#include<bits/stdc++.h>
using namespace std;
int t,m,n,l,v,a[100005][3],b[100005],c,d,sum,cnt,s;
pair <int,int>e[100005];
int p;
bool cmp(pair<int,int> x,pair<int,int> y){
    if(x.first==y.first){
        return x.second<y.second;
    }
    return x.first<y.first;
}
int main(){
    freopen("detect.in","r",stdin);
    freopen("detect.out","w",stdout);
    cin>>t;
    for(int i=1;i<=t;i++){
        sum=0;
        cnt=1;
        d=0;
        cin>>m>>n>>l>>v;
        for(int j=1;j<=n;j++){
            cin>>a[j][0]>>a[j][1]>>a[j][2];
        }
        for(int j=1;j<=m;j++){
            cin>>c;
            if(d<c){
                d=c;
            }
            b[c]++;
        }
        for(int j=1;j<=d;j++){
            b[j]+=b[j-1];
        }
        for(int j=1;j<=n;j++){
            if(a[j][2]<=0&&a[j][1]<=v){
                continue;
            }
            if(a[j][2]<0){
                p=floor(a[j][0]+(double(pow(v,2))-(pow(a[j][1],2)))/(2*a[j][2]));
                if(b[p]-b[a[j][0]]>=1){
                    for(int k=a[j][0];k<=p;k++){
                        if(b[k]-b[k-1]>=1){
                            sum++;
                            e[sum].first=k;
                            break;
                        }
                    }
                    for(int k=p;k>=a[j][0];k--){
                        if(b[k]-b[k-1]>=1){
                            e[sum].second=k;
                            break;
                        }
                    }
                }
            }
            if(a[j][2]==0){
                p=a[j][0];
                if(b[l]-b[p]>=1){
                    for(int k=p;k<=l;k++){
                        if(b[k]-b[k-1]>=1){
                            sum++;
                            e[sum].first=k;
                            break;
                        }
                    }
                    for(int k=l;k>=p;k--){
                        if(b[k]-b[k-1]>=1){
                            e[sum].second=k;
                            break;
                        }
                    }
                }
            }
            if(a[j][2]>0){
                p=ceil(a[j][0]+(double(pow(v,2)-(pow(a[j][1],2))))/(2*a[j][2]));
                if(b[l]-b[p]>=1){
                    for(int k=p;k<=l;k++){
                        if(b[k]-b[k-1]>=1){
                            sum++;
                            e[sum].first=k;
                            break;
                        }
                    }
                    for(int k=l;k>=p;k--){
                        if(b[k]-b[k-1]>=1){
                            e[sum].second=k;
                            break;
                        }
                    }
                }
            }
        }
        cout<<sum<<" ";
        sort(e+1,e+sum+1,cmp);
        for(int j=1;j<=sum;j++){
            s=e[j].second;
            for(int k=j+1;k<=sum;k++){
                if(s<e[k].first){
                    cnt++;
                    j=k;
                    break;
                }else{
                    s=e[k].second;
                }
            }
        }
        cout<<m-cnt<<"\n";
    }
    fclose(stdin);
    fclose(stdout);
    return 0;
}
